/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package transervfx.Dato.Entidad;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;

/**
 *
 * @author oscar
 */
@Entity

@NamedQueries ( { 
    @NamedQuery ( name = "Cliente.findAll", query = "SELECT c FROM Cliente c" ),
    @NamedQuery ( name = "Cliente.findLugar", query = "SELECT l FROM Lugar l WHERE l.id = :id" ),
    @NamedQuery( name = "Cliente.findByCuit", query = "SELECT c FROM Cliente c WHERE c.cuit = :cuit"),
    @NamedQuery ( name = "Cliente.findById", query = "SELECT c FROM Cliente c WHERE c.id = :id" )
    }
  )


@Inheritance(strategy = InheritanceType.JOINED)
//@DiscriminatorColumn(name="CLIENTE_TIPO")
public abstract class Cliente extends Persona implements  Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
 
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "DEUDA_FK")   
    private Deuda deuda=new Deuda();
    

    private Float porcentajeDescuento=new Float(0);
    
 
    @ManyToMany(cascade = CascadeType.ALL)
    private List<LugarPersonalFrecuente> lugaresPersonalesFrecuentes=new ArrayList(); 

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Deuda getDeuda() {
        return deuda;
    }

    public void setDeuda(Deuda deuda) {
        this.deuda = deuda;
    }

    public Float getPorcentajeDescuento() {
        return porcentajeDescuento;
    }

    public void setPorcentajeDescuento(Float porcentajeDescuento) {
        this.porcentajeDescuento = porcentajeDescuento;
    }

    public List<LugarPersonalFrecuente> getLugaresPersonalesFrecuentes() {
        return lugaresPersonalesFrecuentes;
    }

    public void setLugaresPersonalesFrecuentes(List<LugarPersonalFrecuente> lugaresPersonalesFrecuentes) {
        this.lugaresPersonalesFrecuentes = lugaresPersonalesFrecuentes;
    }

    
 
}
